from numpy import *
from pylab import *



p=[]

xx=1000
yy=1000

#### Patron sinusoidal ################################
for i in range(yy):
    r = (255/2)*(1+sin(2*pi*i/160))
    p.append(int(r))
########################################################

d=[]

M=zeros((xx,yy))

u=1
for f in range(8):
    
    for i in range(yy):
        for j in range(xx):    
            M[j][i]=M[j][i]+p[i]
    
     







def conversion(a):
    """
Convierte un numero entero dado a binario y posteriormente a Gray de ocho bits.

"""

###########  Conversion a binario ##############################################
    while a>=2:
        b=a%2
        c=a/2
        a=c
        d.append(b)
    d.append(1)

######## Aqui se completan los ocho bits en caso de ser nesesario  ############

    if len(d)<8:
        while len(d)<8:
            d.append(0)

#########################################################################

################## Se ponen los numeros en el orden adecuado ############# 
    l=[]
    u=0

    for k in range(len(d)):
        u=u+1
        l.append(d[-u])
##########################################################################


###############  Conversion de binario a Gray #############################

    h=[]

    h.append(l[0])


    for i in range(7):
        if l[i]+l[i+1]==1:
            h.append(1)
        if l[i]+l[i+1]==0:
            h.append(0)
        if l[i]+l[i+1]==2:
            h.append(0)

###########################################################################

    return h


t=[]

for n in p:
    t.append(conversion(n))
    d=[]

r=[]
g=[]


### Separacion de cada bit ##################################
for w in range(8):
    for y in t:
        r.append(y[w])
    g.append(r)        
    r=[]
#############################################################


print len(t)
print len(g)
print len(g[0])


####### Se generan una  matriz para cada elemento de la lista g ##### 
m=zeros((xx,yy))

u=1
for f in range(8):
    
    for i in range(yy):
        for j in range(xx):    
            m[j][i]=m[j][i]+g[f][i]
    
     
    #figure()
   # imshow(m,cmap="gray")
    #m=where(m<0.2,0,1)								
        
    gray()
    
    imsave("gray%d"%u,m)
    m=zeros((xx,yy))
    u=u+1

#show()
#######################################################################


#print g[0]





#http://www.unicrom.com/dig_conversion_binario-GRAY_GRAY_Binario.asp

#imshow(M)
#show()
